package dict

import (
	"boy-go/modules/system/model"
	"boy-go/pkg/redis"
	"boy-go/pkg/xcache"
	"boy-go/pkg/xjson"
	"context"
	"encoding/json"
)

func GetDictData(ctx *context.Context, key string) []*model.SysDictData {
	if ctx == nil {
		backCtx := context.Background()
		ctx = &backCtx
	}
	jsonStr := redis.GetValue(*ctx, getCacheKey(key))
	if jsonStr == nil || *jsonStr == "" {
		return nil
	}
	datas, err := xjson.JsonToStructArray[model.SysDictData](*jsonStr)
	if err != nil {
		return nil
	}
	return datas
}

func SetDictData(ctx *context.Context, key string, datas []*model.SysDictData) {
	if datas != nil {
		jsonByte, err := json.Marshal(datas)
		if err == nil {
			redis.SetValue(*ctx, getCacheKey(key), string(jsonByte))
		}
	}
}

func getCacheKey(dictKey string) string {
	return xcache.SYS_DICT_KEY + dictKey
}
